import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;

public class Generrator {
    public static void main(String[] args) {
        AutoGenerator autoGenerator = new AutoGenerator();

        // 数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUrl("jdbc:mysql://110.42.62.203:3306/cqjtuoj2?useSSL=false");
        dataSourceConfig.setPassword("adminyml@123");
        dataSourceConfig.setUsername("root");
        autoGenerator.setDataSource(dataSourceConfig);

        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setAuthor("Forever");
        globalConfig.setOutputDir("E:\\JavaCodeBase\\schoolOd\\src\\main\\java");
        globalConfig.setOpen(false);
        globalConfig.setFileOverride(true);
        globalConfig.setMapperName("%sDao");
        globalConfig.setServiceName("%sService");
        globalConfig.setIdType(IdType.ASSIGN_ID);
        globalConfig.setBaseColumnList(true); // 开启生成基本列
        globalConfig.setBaseResultMap(true); // 开启生成基本结果映射
        globalConfig.setEntityName("%s"); // 设置实体类名称不带前缀
        globalConfig.setMapperName("%sDao"); // 设置 Mapper 名称
        globalConfig.setServiceName("%sService"); // 设置 Service 名称
        globalConfig.setControllerName("%sController"); // 设置 Controller 名称
        autoGenerator.setGlobalConfig(globalConfig);
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.cqjtuoj2");
        packageConfig.setMapper("mapper");
        packageConfig.setService("service");
        packageConfig.setController("controller");
        packageConfig.setEntity("domain.po");
        autoGenerator.setPackageInfo(packageConfig);
        // 策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setEntityLombokModel(true); // 使用 Lombok
        strategyConfig.setChainModel(true); // 生成链式代码
        strategyConfig.setRestControllerStyle(true); // 生成 @RestController 控制器
        strategyConfig.setTablePrefix("cqjtuoj_"); // 去除表前缀
        strategyConfig.setNaming(com.baomidou.mybatisplus.generator.config.rules.NamingStrategy.underline_to_camel); // 下划线转驼峰命名
        strategyConfig.setColumnNaming(com.baomidou.mybatisplus.generator.config.rules.NamingStrategy.underline_to_camel); // 列名下划线转驼峰
        strategyConfig.setEntityTableFieldAnnotationEnable(true); // 开启实体类字段注解
        autoGenerator.setStrategy(strategyConfig);

        // 执行代码生成
        autoGenerator.execute();

    }
}
